class DataSource {
  bool success;
  DataOut data;

  DataSource({this.success, this.data});

  DataSource.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    data = json['data'] != null ? new DataOut.fromJson(json['data']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['success'] = this.success;
    if (this.data != null) {
      data['data'] = this.data.toJson();
    }
    return data;
  }
}

class DataOut {
  DataIn data;

  DataOut({this.data});

  DataOut.fromJson(Map<String, dynamic> json) {
    data = json['data'] != null ? new DataIn.fromJson(json['data']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.data != null) {
      data['data'] = this.data.toJson();
    }
    return data;
  }
}

class DataIn {
  String requestId;
  Data data;

  DataIn({this.requestId, this.data});

  DataIn.fromJson(Map<String, dynamic> json) {
    requestId = json['RequestId'];
    data = json['Data'] != null ? new Data.fromJson(json['Data']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['RequestId'] = this.requestId;
    if (this.data != null) {
      data['Data'] = this.data.toJson();
    }
    return data;
  }
}

class Data {
  List<Tables> tables;

  Data({this.tables});

  Data.fromJson(Map<String, dynamic> json) {
    if (json['Tables'] != null) {
      tables = new List<Tables>();
      json['Tables'].forEach((v) {
        tables.add(new Tables.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.tables != null) {
      data['Tables'] = this.tables.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Tables {
  List<TableRows> tableRows;

  Tables({this.tableRows});

  Tables.fromJson(Map<String, dynamic> json) {
    if (json['TableRows'] != null) {
      tableRows = new List<TableRows>();
      json['TableRows'].forEach((v) {
        tableRows.add(new TableRows.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.tableRows != null) {
      data['TableRows'] = this.tableRows.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class TableRows {
  List<TableColumns> tableColumns;

  TableRows({this.tableColumns});

  TableRows.fromJson(Map<String, dynamic> json) {
    if (json['TableColumns'] != null) {
      tableColumns = new List<TableColumns>();
      json['TableColumns'].forEach((v) {
        tableColumns.add(new TableColumns.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.tableColumns != null) {
      data['TableColumns'] = this.tableColumns.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class TableColumns {
  int endRow;
  int endColumn;
  int height;
  int width;
  int startRow;
  int startColumn;
  List<String> texts;

  TableColumns(
      {this.endRow,
        this.endColumn,
        this.height,
        this.width,
        this.startRow,
        this.startColumn,
        this.texts});

  TableColumns.fromJson(Map<String, dynamic> json) {
    endRow = json['EndRow'];
    endColumn = json['EndColumn'];
    height = json['Height'];
    width = json['Width'];
    startRow = json['StartRow'];
    startColumn = json['StartColumn'];
    texts = json['Texts'] != null ? json['Texts'].cast<String>() : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['EndRow'] = this.endRow;
    data['EndColumn'] = this.endColumn;
    data['Height'] = this.height;
    data['Width'] = this.width;
    data['StartRow'] = this.startRow;
    data['StartColumn'] = this.startColumn;
    data['Texts'] = this.texts;
    return data;
  }
}
